/*
 * 菜单树
 * 依赖于hjp.events.tree.MenuTreeEvents.js来响应具体节点的事件
 */
hjp.widgets.tree.MenuTree = Ext.extend(Ext.tree.TreePanel, {
	/*
	 * @root_id required @root_text required @root_url required 注意在layout:
	 * 'border' 的部分，必须有region: 'center'，所有这里没有layout
	 */
	initComponent: function() {
		Ext.apply(this, {
			// 如果超出范围带自动滚动条
			autoScroll: true,
			animate: false,
            // 根节点设置
			root: new Ext.tree.AsyncTreeNode({
				id: this.root_id,
				text: this.root_text,
				loader: new Ext.tree.TreeLoader({
					url: this.root_url,
					requestMethod: 'GET',
					listeners: {
						"beforeload": function(treeloader, node){
							treeloader.baseParams = {
								id: node.id,
								method: 'GET'
							};
						}
					}
				})
			}), // e/o root config
			// 默认根目录不显示
			rootVisible: false,
			border: false,
			animate: false,
			enableDD: false,
			containerScroll: true
		}); // e/o apply

		// call parent
		hjp.widgets.tree.MenuTree.superclass.initComponent.apply(this, arguments);
	},// e/o initComponent
    
	// 在render后加入节点的事件
    afterRender: function() {
        hjp.widgets.tree.MenuTree.superclass.initComponent.apply(this, arguments);
        this.root.render();
        if (!this.rootVisible){
            this.root.renderChildren();
        }
        this.on('click', function(node, event) {
            // 叶子节点点击不进入链接
            if (node.isLeaf()) {
                event.stopEvent();
                // 显示叶子节点菜单
                hjp.events.tree.MenuTreeEvents(node, event);
            } else {
                // 不是叶子节点不触发事件
                event.stopEvent();
                // 点击时展开
                node.toggle();
            }        
        }, this);
    }// e/o afterRender
});

// 注册为xtype
Ext.reg('hjp.widgets.tree.MenuTree', hjp.widgets.tree.MenuTree);